{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# AUC Introduction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.   0.   0.5  0.5  1. ]\n",
      "[ 0.   0.5  0.5  1.   1. ]\n",
      "[ 0.8  0.5  0.3  0.1]\n"
     ]
    }
   ],
   "source": [
    "y = np.array([0, 0, 1, 1])\n",
    "y_pred = np.array([0.1, 0.5, 0.3, 0.8])\n",
    "fpr, tpr, thresholds = metrics.roc_curve(y, y_pred)\n",
    "fpr = np.insert(fpr, 0, 0)\n",
    "tpr = np.insert(tpr, 0, 0)\n",
    "print(fpr)\n",
    "print(tpr)\n",
    "print(thresholds)\n",
    "# 使用梯形规则计算曲线下面积\n",
    "auc = metrics.auc(fpr, tpr)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "计算预测得分曲线下的面积。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.75\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nADxCAQDg/QKLXVLVGkHatAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1232e349dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print((metrics.roc_auc_score(y, y_pred)))\n",
    "\n",
    "mpl.rcParams['font.sans-serif'] = 'SimHei'\n",
    "mpl.rcParams['axes.unicode_minus'] = False\n",
    "plt.figure(facecolor='w')\n",
    "plt.plot(fpr, tpr, marker='o', lw=2, ls='-', mfc='g', mec='g', color='r')\n",
    "plt.plot([0,1], [0,1], lw=2, ls='--', c= 'b')\n",
    "# X，Y轴的范围\n",
    "plt.xlim((-0.01, 1.02))\n",
    "plt.ylim((-0.01, 1.02))\n",
    "# plt.xticks设置x轴刻度：范围是(0,1.1);间隔为0.1.\n",
    "plt.xticks(np.arange(0, 1.1, 0.1))\n",
    "# plt.yticks设置y轴刻度：范围是(0,1.1);间隔为0.1.\n",
    "plt.yticks(np.arange(0, 1.1, 0.1))\n",
    "plt.xlabel('False Positive Rate', fontsize=12)\n",
    "plt.ylabel('True Positive Rate', fontsize=12)\n",
    "plt.grid(b=True, ls='dotted')\n",
    "plt.title('ROC曲线', fontsize=18)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
